package cn.bincker.mycaptcha;

import cn.bincker.mycaptcha.basic.entity.MyAnswer;
import cn.bincker.mycaptcha.basic.entity.MyCaptcha;
import cn.bincker.mycaptcha.basic.entity.MyQuestion;

import java.awt.image.BufferedImage;
import java.util.Optional;

public interface CacheManager<T extends MyCaptcha, A extends MyAnswer> {
    /**
     * 推入一条缓存
     * @param question 验证码
     */
    void put(MyQuestion<T, A> question, BufferedImage ...images);

    /**
     * 会按照已经生成的缓存数量和最大数量的比值取随机值，如果命中则会返回缓存验证码，否则返回空
     */
    Optional<MyQuestion<T, A>> shooting();

    /**
     * 从本地重新加载缓存
     */
    void reload();
}
